#/bin/bash
#Variaveis do programa

tempfile=`tempfile 2>/dev/null` || tempfile=fifo/test$$
trap "rm -f $tempfile" 0 1 2 5 15
DATABASE=$(cat conf/database)
export MYSQL_TABLE=alvarion_au
FIFO="fifo/tmp-mysql-AU-$$"

dialog --shadow --backtitle "SNMPGrab" --nocancel\
	--msgbox "Script para obtencao de dados do Alvarion AU (AU-SA) (10.1.1.221)" 0 0

#prepara o script para interceptar os comandos de interrupcao
trap "x=1" SIGINT
x=0

#cria um fifo para poder utilizar a base de dados em modo "persistente"
dialog --shadow --backtitle "SNMPGrab" --nocancel\
	--infobox "Criando FIFO para acesso a base de dados" 0 0
mkfifo $FIFO

#abre a conexao propriamente dita com a base de dados
dialog --shadow --backtitle "SNMPGrab" --nocancel\
	--infobox "Criando conexao com a base de dados ($DATABASE), usando tabela ($MYSQL_TABLE)" 0 0
cat <> $FIFO | mysql -h $DATABASE -u @ testes_alvarion &
sleep 5

#ve quais estacoes estao ativas (pelos nomes) e da a escolha ao usuario
opcoes=$(snmpwalk -v 1 -Oq -c public 10.1.1.221 .1.3.6.1.4.1.12394.1.1.11.5.1.2.1.45 | cut -b 49-)

dialog --shadow --backtitle "SNMPGrab" --nocancel\
	--menu "Escolha a SU que deseja monitorar:" 0 0 0 \
	$opcoes \
	0 "Retornar" 2>$tempfile

resposta=$(cat $tempfile)
rm -rf $tempfile

case $resposta in 
	0)
		#matando o processo do CAT original...
		dialog --shadow --backtitle "SNMPGrab" --nocancel\
			--infobox  "Finalizando conexao com a base de dados" 0 0
		kill -9 `ps | grep cat | cut -b 1-5` 2>/dev/null 3>/dev/null

		#remove o fifo que criamos inicialmente
		dialog --shadow --backtitle "SNMPGrab" --nocancel\
			--infobox "Removendo FIFO" 0 0
		rm -rf $FIFO

		##that's all, folks!
		dialog --shadow --backtitle "SNMPGrab" --nocancel\
			--infobox "Script finalizado com sucesso!" 0 0
		#sai
		exit 0
	;;
	*)
		estacao=$resposta
	;;
esac

#indica o inicio do processo de medicao
echo "Medicao iniciada os dados estao sendo escritos no banco de dados"

#pega o MAC ADDR da estacao que estamos monitorando..
export SUMAC=$(snmpget -Oqv -v 1 -c public 10.1.1.221 .1.3.6.1.4.1.12394.1.1.11.5.1.2.1.2.${estacao} | cut -b 2-3,5-6,8-9,11-12,14-15,17-18)

#loop principal do programa...
while [ ${x} -eq 0 ]
do
	##pega o timestamp (meio desnecessario, mas serve para o display)
	timestamp=$(date +%Y%m%d%H%M%S)
	#pega TODOS os outros dados numa query soh, e os interpreta com o AWK
	snmpget -Oqv -v 1 -c public 10.1.1.221 \
	.1.3.6.1.4.1.12394.1.1.11.2.2.1.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.2.2.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.3.1.4.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.3.2.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.3.3.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.3.4.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.3.6.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.3.7.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.3.8.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.3.9.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.4.1.1.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.4.1.3.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.4.1.4.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.4.1.5.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.4.2.2.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.4.2.3.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.4.2.5.0 \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.9.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.10.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.11.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.12.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.13.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.14.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.15.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.16.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.17.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.18.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.19.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.20.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.21.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.22.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.23.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.24.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.2.3.1.3.0 \
	.1.3.6.1.4.1.12394.1.1.11.2.3.1.5.0 \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.7.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.8.${estacao} \
	.1.3.6.1.4.1.12394.1.1.11.5.1.2.1.5.${estacao} \
	.1.3.6.1.4.1.12394.1.1.10.7.0 \
	| bin/wrapper_snmpget.awk 2>/dev/null >> $FIFO

	echo $timestamp, $SUMAC

#	#completa 1 segundo antes de repetir
	usleep 900000
done

x=1
##matando o processo do CAT original...
dialog --shadow --backtitle "SNMPGrab" --nocancel\
	--infobox  "Finalizando conexao com a base de dados" 0 0
kill -9 `ps | grep cat | cut -b 1-5` 2>/dev/null 3>/dev/null

#remove o fifo que criamos inicialmente
dialog --shadow --backtitle "SNMPGrab" --nocancel\
	--infobox "Removendo FIFO e Link" 0 0
rm -rf $FIFO

##that's all, folks!
dialog --shadow --backtitle "SNMPGrab" --nocancel\
	--infobox "Script finalizado com sucesso!" 0 0
exit 0